package com.briup.es.service.impl;

import com.briup.es.service.UploadService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

@Service
public class UploadServiceImpl implements UploadService {

    @Value("${upload.nginx.base-path}")
    private String basePath;
    @Value("${upload.nginx.base-url}")
    private String baseUrl;

    @Override
    public String upload(MultipartFile file) {
        // 获取文件的初始名字
        String originalFilename = file.getOriginalFilename();
        assert originalFilename != null;
        // 随机生成文件的名称
        String filename = generatorFileName(originalFilename);

        File file1 = new File(basePath, filename);
        try {
            // 将file文件数据，拷贝到file1中，即将数据文件放入到指定的nginx目录下
            file.transferTo(file1);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        return baseUrl + filename;
    }

    private String generatorFileName(String originalName) {
        // a.jpg.txt.png
        String[] infos = originalName.split("[.]");
        // 获取文件后缀
        String suffix = infos[infos.length - 1];
        // 随机生成文件的名称
        String name = UUID.randomUUID().toString().replace("-", "");
        // 将文件名与文件后缀进行拼接后返回，以格式化的形式进行字符串拼接
        return String.format("%s.%s", name, suffix);
    }
}

